今天我們來關注一下 Go 的運算元該怎麼使用
在 Go 語言中 運算元代表一個運算式的基本值 而 Go 的運算元一共有 21 種
這邊就不一一介紹了 基本的加減乘除跟比較運算就不特別說明了 就幾個比較特別的運算元做說明
1.位移運算元 "<<" 跟 ">>" 這兩個都屬於二元運算元
"<<" 往左位移運算 ex:4 << 2 = 16 根據第 2 運算元決定 第 1 運算元位址 往左移動幾次
0000 0100 = 4 移動前
0001 0000 = 16移動後
">>" 往右位移運算 ex:4 >> 2 = 1 根據第 2 運算元決定 第 1 運算元位址 往右移動幾次
0000 0100 = 4 移動前
0000 0001 = 1 移動後
2.算數運算 "&"、"|"、"^"、"&^"
"&" And ex : 7 & 13 = 5 兩個同位的 2 進位數只要一個為 0 則次欄位為 0
0000 0111 = 7
0000 1101 = 13
------結果------
0000 0101 = 5
"|" or ex : 7 | 13 = 15 兩個同位的 2 進位數只要一個為 1 則次欄位為 1
0000 0111 = 7
0000 1101 = 13
------結果------
0000 1111 = 15
"^" 互斥 ex : 7 ^ 13 = 10 兩個同位的 2 進位數只要都是 1 則結果為 0
0000 0111 = 7
0000 1101 = 13
------結果------
0000 1010 = 10
"&^" 互斥And ex : 7 &^ 13 = 2 根據第 2 個運算元的 2 進位值如果為 1 則將第一運算元的對應位址歸 0
0000 0111 = 7
0000 1101 = 13
------結果------
0000 0010 = 2
^unit8(常數) ex : ^unit8(1) = 254 Go內建函數 unit8 會將一個常數轉為 unit8 類型值 去掉常數正負號
0000 0001 = 1
1111 1111 = 255
------結果------
1111 1110 = 254
^常數 ex : ^1 這裡我們採用 二補數的概念 將常數進行反轉運算 在計算二進制數字的二補數時,會將數字進行位元反相運算,再將結果加1,不考慮溢位位元(一般情形,溢位位元會為0),就可以得到該數字的二補數。
0000 0001 = 1
1111 1111 = -1
------結果------
1111 1110 = -2
3.運算符號優先順序(x代表星號)在Go的運算式中一元運算的優先度最高 二元運算的話則數字越大優先度越高
5:x/%<<>>&&^
4:+-|^
3:== != < <= > >=
2:&&
1:||